package br.skytef.stmanager.utils;

import java.io.IOException;
import java.io.InputStream;
import java.util.Locale;

import jxl.Sheet;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.read.biff.BiffException;

public class PlanSE {

	private static Workbook planilha;
	private Sheet sheet;
	
	private String  mensagemErro;
	public String getMensagemErro() {return mensagemErro;}
	public void setMensagemErro(String mensagemErro) {this.mensagemErro = mensagemErro;}
	
	private String razaoSocialParceiro;
	public String getRazaoSocialParceiro() {return razaoSocialParceiro;}
	public void setRazaoSocialParceiro(String razaoSocialParceiro) {this.razaoSocialParceiro = razaoSocialParceiro;}
	
	private long cnpj;
	public long getCnpj() {return cnpj;}
	public void setCnpj(long cnpj) {this.cnpj = cnpj;}
	
	private int qtdLoja;
	public int getQtdLoja() {return qtdLoja;}
	public void setQtdLoja(int qtdLoja) {this.qtdLoja = qtdLoja;}
	
	private int qtdPDV;
	public int getQtdPDV() {return qtdPDV;}
	public void setQtdPDV(int qtdPDV) {this.qtdPDV = qtdPDV;}
	
	private String tipoCobranca;
	public String getTipoCobranca() {return tipoCobranca;}
	public void setTipoCobranca(String tipoCobranca) {this.tipoCobranca = tipoCobranca;}
	
	private String data;
	public String getData() {return data;}
	public void setData(String data) {this.data = data;}

	private double valor;
	public double getValor() {return valor;}
	public void setValor(double valor) {this.valor = valor;}

	private String razaSocialCliente;
	public String getRazaSocialCliente() {return razaSocialCliente;}
	public void setRazaSocialCliente(String razaSocialCliente) {this.razaSocialCliente = razaSocialCliente;}
	
	private static String linhaErrada;
	public String getLinhaErrada() {return linhaErrada;}
	
	public PlanSE(InputStream is) throws BiffException, IOException{
		WorkbookSettings workbookSettings = new WorkbookSettings();
		workbookSettings.setLocale(new Locale("pt", "BR"));
		workbookSettings.setExcelDisplayLanguage("PT");
		workbookSettings.setEncoding( "Cp1252" );
		planilha = Workbook.getWorkbook(is , workbookSettings);
		sheet = planilha.getSheet(0);
	}

	public int qtlinha(){
		return sheet.getRows();
	}

	public boolean validar(){
		try{
			if(!sheet.getCell(0, 0).getContents().toUpperCase().trim().equals("INTEGRADOR")){
				mensagemErro = "Erro: Coluna \"INTEGRADOR\"";
				return false;
			}		
			else if(!sheet.getCell(1, 0).getContents().toUpperCase().trim().equals("CLIENTE")){
				mensagemErro = "Erro: Coluna \"CLIENTE\"";
				return false;
			}
			else if(!sheet.getCell(2, 0).getContents().toUpperCase().trim().equals("CNPJ")){
				mensagemErro = "Erro: Coluna \"CNPJ\"";
				return false;
			}
			else if(!sheet.getCell(3, 0).getContents().toUpperCase().trim().equals("QUANT.LOJA")){
				mensagemErro = "Erro: Coluna \"QUANT.LOJA\"";
				return false;
			}
			else if(!sheet.getCell(4, 0).getContents().toUpperCase().trim().equals("QUANT.PDV")){
				mensagemErro = "Erro: Coluna \"QUANT.PDV\"";
				return false;
			}
			else if(!sheet.getCell(5, 0).getContents().toUpperCase().trim().equals("TIPO DE COBRANÇA")){
				mensagemErro = "Erro: Coluna \"TIPO DE COBRANÇA\"";
				return false;
			}
			else if(!sheet.getCell(6, 0).getContents().toUpperCase().trim().equals("DATA")){
				mensagemErro = "Erro: Coluna \"DATA\"";
				return false;
			}else if(!sheet.getCell(7, 0).getContents().toUpperCase().trim().equals("VALOR")){
				mensagemErro = "Erro: Coluna \"VALOR\"";
				return false;
			}else{
				return true;
			}		
		}catch (Exception e){
			setMensagemErro("Planilha inválida");
			return false;
		}
	}
	
	public boolean importarlinha(int i){
		try{	
			linhaErrada = ("Erro na linha:"+(i+1)+" CNPJ: " +sheet.getCell(2, i).getContents());
			
			setRazaoSocialParceiro(sheet.getCell(0, i).getContents().toUpperCase().trim());	
			setRazaSocialCliente(sheet.getCell(1, i).getContents().toUpperCase().trim());
			setCnpj(new Cnpj().StringParaInteiro(sheet.getCell(2, i).getContents()));
			setQtdLoja(StrInt(sheet.getCell(3, i).getContents()));
			setQtdPDV(StrInt(sheet.getCell(4, i).getContents()));
			setTipoCobranca(sheet.getCell(5, i).getContents().toUpperCase().trim());
			setData(sheet.getCell(6, i).getContents());
			setValor(StrDoble(sheet.getCell(7, i).getContents()));			
			return true;
		}catch (Exception e){
			return false;
		}
	}
	
	public Double StrDoble(String valor){
		Double num = 0.0;
		String aux = valor;
		try {
			if(valor.contains(",")){
				aux = valor.replace(".", "");
			}
			aux = aux.replace(",",".");
			num = Double.parseDouble(aux);
		} catch (Exception e) {
			System.out.println("Erro na conversão de Double: "+e);
		}
		return num;
	}
	public int StrInt(String valor){
		int num;
		try {
			num = Integer.parseInt(valor);
		} catch (Exception e) {
			num = 0;
		}		
		return num;
	}

}
